=========================================================================
ISTRUZIONI 
========================================================================

Il tar file del secondo frammento comprende i seguenti file

$$ tar -tvf lcskit_f2ZTL.tar

ZTL/Src/README-2
ZTL/Src/intestazione.txt
ZTL/Src/Makefile
ZTL/Src/testmailscript
ZTL/Src/MAILDATA/anagrafe.txt
ZTL/Src/MAILDATA/multe.log
ZTL/Src/MAILDATA/multe/AS105SU
ZTL/Src/MAILDATA/multe/AU663XZ
ZTL/Src/MAILDATA/multe/BU995PK
ZTL/Src/MAILDATA/multe/CN445JK
ZTL/Src/MAILDATA/multe/DD115PU
ZTL/Src/MAILDATA/multe/DS009LU
ZTL/Src/MAILDATA/multe/KC044ZZ
ZTL/Src/MAILDATA/multe/KK876VB




-----------------------------------------------
Descrizione dei file contenuti nel kit
-----------------------------------------------

README-2		: questo file

Makefile		: makefile per il test finale dei primi 2 frammenti e la
			  consegna  
			  (NON MODIFICARE se non nelle parti richieste)


testmailscript	        : script di test
			   (NON MODIFICARE)

intestazione.txt	: facsimile di lettera

MAILDATA/anagrafe.txt
MAILDATA/multe.log      : file di dati anagrafici e di multe (per il test)

MAILDATA/multe/*        : varie lettere generate dal test a partire dai file
			  anagrafe.txt e multe.log

ZTL/Src/MAILDATA/err.check : output atteso su stderr dal test



------------------------------------------------
Cosa deve essere realizzato per "mailscript"
------------------------------------------------

Il secondo frammento prevede la realizzazione di uno script bash (mailscript) 
che elabora off-line il file di log degl iaccessi erronei alla ZTL e compone le lettere di notifica della/e infrazioni. Lo script viene attivato come:
\begin{verbatim}
  $ ./mailscript logfile anagrafe [ dir ]
\end{verbatim}
dove logfile ed anagrafe sono due file di testo
(ASCII) e dir (opzionale) e' il nome di una directory dove 
memorizzare le lettere.   

Lo script deve controllare la validit\`a dei suoi argomenti, scorrere
il file logfile e per ogni targa generare una singola lettera
indirizzata al proprietario che contenga la lista delle infrazioni
rilevate. La lettera verra' salvata in un file con lo stesso nome
della targa all'interno della directory dir (se specificata)
o nella directory corrente ".".  

L'idea e' quella di utilizzare lo script a fine giornata per generare
ed inviare le lettere relative a tutte le infrazioni rilevate.

Se la stessa infrazione (stessa targa e stassa data-ora di passaggio) e' 
segnalata piu' volte le repliche devono essere scartate .


------------------------------------------------
Formato dei file
------------------------------------------------

** logfile ****************************************8
e' il file che contiene tutti i passaggi dalla ZTL che
costituiscono una infrazione ( viene creato dal processo ztl da
realizzare nel terzo frammento ) il formato di ogni passaggio e'

BU995PK 01/01/2008-04:00

ed i passaggi sono registrati nel file uno dopo l'altro separati da un 
newline ('\n')

** anagrafe ***********************************************8
e' il file che contiene le informazioni relative a nome cognome
indirizzo dei proprietari delle auto, secondo il formato:

BU995PK, Del Ponte, Carlo, Pisa, Largo Pontecorvo, 5

si tratta di 5 campi targa, cognome, nome, localita, indirizzo con
campi separati da virgole. Va notato che la virgola puo' essere
tranquillamente usata nell'ultimo campo (indirizzo) per separare il
nome della via dal numero civico.

Anche in questo caso i record sono registrati  nel file uno dopo l'altro 
separati da un newline ('\n')


----------------------------------------------------------------------------
Apertura, chiusura e lettura di file in BASH
----------------------------------------------------------------------------
L'apertura e la chiusura di un file puo' essere effettuata in bash attreverso
la 'exec' in particolare:

   exec n< file_name    

apre il file file_name in lettura e gli assegna il file descriptor 'n' 

   exec n> file_name

apre il file file_name in scrittura (file descriptor n)

   exec n<> file_name

apre in lettura e scrittura. Invece per chiudere il file descriptor n

   exec n>&-

Dopo aver aperto il file \`e possibile leggerlo utilizzando il comando 'read'
con opzione -u numero_descrittore.

------------------
Come procedere :
-----------------

0) leggere attentamente questo README 

1) analizzare accuratamente lo script ./testmailscript e
   l'ouput atteso su stderr (file MAILDATA/err.check) e l'aspetto 
   delle lettere generate (directory MAILDATA/mail) a partire dal file 
   intestazione.txt

2) implementare lo script richiesto, con le opportune sottofunzioni in un file
   './mailscript' 
   ed testando incrementalmente il codice prodotto

3) testare infine lo script con il nostro script ./testmailscript eseguendo

       bash:~$ make testmail

  NOTA: (1) tutti i file sviluppati per la soluzione si devono trovare nella
  directory ZTL/Src/
  (2) E' importante che il test venga effettuato solo su uno script 
  gia' ragionevolmente corretto  altrimenti i risultati possono essere di
  difficile interpretazione, fuorvianti o inutili.

4) preparare la documentazione: ovvero commentare adeguatamente il file che
   contiene la soluzione aggiungendo la dichiarazione di originalita'

   # file: mailscript
   #    \author Nino Bixio
   #  Si dichiara che il contenuto di questo file e' in ogni sua parte opera
   #  originale dell' autore.  

5) aggiornare il file "gruppo.txt" con nome e dati

6) consegnare il file ESCLUSIVAMENTE eseguendo

      bash:~$ make consegna2

   e seguendo le istruzioni. 
   Per la consegna e' necessaria l'utility "mpack" installata solo nelle
   macchine dei laboratori H, M ed I. Per consegne da altre macchine e'
   possibile scaricare il binario di 'mpack' dal sito del corso (attenzione:
   richiede che il mailer sia configurato correttamente).

   Per consegne da altre macchine e' possibile scaricare il binario di
   'mpack' dal sito del corso oppure semplicemente allegare il tar
   file creato dal make consegna ad un normale messaggio di mail con
   subject "lcs09: consegna secondo frammento".

   Tutte le consegne verranno confermate con un messaggio di reply
   all'indirizzo da cui e' stato inviato il tar entro 2/3
   giorni. In caso questo non si verifichi contattare il docente.
   
---------------------------------------
 NOTE IMPORTANTI: LEGGERE ATTENTAMENTE
---------------------------------------

1) gli eleborati non consegnati con "make consegna2" non verranno accettati

2) tutti gli elaborati verranno confrontati fra di loro con tool automatici
   per stabilire eventali situazioni di PLAGIO. Se tali situazioni si
   verificheranno *tutti* gli elaborato coinvolti verranno annullati con
   conseguente perdita del bonus. 

3) Tutti gli studenti coinvolti in un episodio di PLAGIO comprovato dovranno
   re-implementare il frammento incriminato e saranno sottoposti ad una prova
   orale supplementare. In caso di recidive verranno esclusi dalla
   possibilita' di sostenere l'esame per TUTTO IL RESTO DELL'ANNO ACCADEMICO
   IN CORSO.

4) Chi in sede di orale risulta palesemente non essere l'autore del software
   consegnato in uno dei frammenti verra' escluso dalla possibilita' di
   sostenere l'esame per TUTTO IL RESTO DELL'ANNO ACCADEMICO IN CORSO.

5) Tutti i comportamenti scorretti ai punti 3 e 4 verranno segnalati
   ufficialmente al presidente del corso di laurea, che si riserva di
   decidere azioni disciplinari supplementari a quelle sopra descritte.

----------------------------
 VALUTAZIONE DELL'ESERCIZIO:
----------------------------

Gli studenti che consegnano una versione funzionante e ragionevolmente
corretta dello script entro la data di scadenza prevista su WEB
accumulano un bonus di 2 punti che verra' sommato al voto finale (vedi
lucidi lezioni ed esercitazioni).

La qualita' del codice consegnato verra' valutata come
parte del progetto finale e contribuira' alla votazione assegnata al progetto.
Eventuali caratteristiche in piu' rispetto a quelle strettamente richieste
dalle specifiche date verranno valutate in questa sede.
